
const mongoose = require("mongoose");
// 这个工具专门用来做服务器请求的
const rp = require('request-promise');
// 内置模块file-system文件系统
const fs = require('fs');
// path解析路径，内置文件，
const path = require('path');
const util = require('util');
// fs.unlink方法可以删除静态资源，参数为需要删除资源在电脑上的绝对路径
const unlink = util.promisify(fs.unlink);

const update = async data => {

    const { _id, url } = data;
    var options = {
        method: 'patch',
        uri: `http://localhost:3001/cinemas/${_id}`,
        // 把对象交给具体model，把url以push的方式传给imgs
        body: {
            $push: {
                imgs: url,
            }
        },
        json: true // Automatically stringifies the body to JSON
    };
    // 如果try正常，正常执行返回值，如果错误，则把错误返回回去
    try {
        // rp转发并返回返回值
        return await rp(options);
    } catch (error) {
        return error;
    };
}

// 删除在资源服务器上的图片
const deleteImg = async ({ _id, url }) => {
    // __dirname全局对象，显示当前文件绝对路径
    const routesPath = path.resolve(__dirname, "../public");
    // 用join方法拼接
    const imgUrl = path.join(routesPath, url);
    // 删除图片
    await unlink(imgUrl);

    // 解除关联数据
    var options = {
        method: 'delete',
        uri: `http://localhost:3001/cinemas/${_id}/imgs/${encodeURIComponent(url)}`,
        json: true, // Automatically stringifies the body to JSON
    };
    try {
        return await rp(options);
    } catch (error) {
        return error
    }
}

// 暴露接口
module.exports = { update, deleteImg };